IICSのSecure Agentの起動を自動化してみる
データアナリティクス事業本部、池田です。
最近、 Informatica Intelligent Cloud Services (以下IICS)や
Informatica Enterprise Data Catalog (EDC)を触っています。
IICS自体はクラウドのサービス(iPaaS)ですが、 その稼働に必要な処理エンジンであるSecure Agentはサーバなどへのインストールが必要になります。
Informatica Intelligent Cloud Servicesをはじめてみよう
クラウド型のデータ統合ツールを選定する際に重要な要素となるのが、「セキュリティへの対応」。IICSでは、IICS自体でデータを持たず、Secure Agentを通してデータ統合処理を実行していきます。Secure Agentとは、実際にデータを扱う処理エンジンで、クラウド/オンプレミス環境問わず、インターネットに接続可能な環境であれば、どこへでも配置可能です。
今回は Amazon EC2
にSecure Agentを導入した際に、その起動を自動化した話を書きます。
開発環境などではEC2を夜間止めておき、
Secure Agentもそれに伴って起動・停止したいというケースはよくあるのかなと思います。
※サーバなど(今回であればEC2)の自動起動・停止については触れません。
弊社で無償提供している opswitch などをご活用下さい。
使用した環境はEC2の Ubuntu 16.04.7 LTS
です。
スクリプト
以下のような、Secure Agentを起動or停止するスクリプトを作成しました。
#!/bin/bash -l set -eu if [ $# -ne 1 ]; then echo "指定された引数は$#個です。" 1>&2 echo "実行するには1個の引数が必要です。" 1>&2 echo "$0 [start|stop]" 1>&2 exit 1 fi action=$1 IICSAGENT_DIR="【Secure Agentのインストールディレクトリ】" cd ${IICSAGENT_DIR}apps/agentcore/ if [ "$action" = "stop" ]; then ./infaagent shutdown echo "IICS Agentのshutdownが実行されました。" elif [ "$action" = "start" ]; then ./infaagent startup echo "IICS Agentのstartupが実行されました。" else echo "指定された引数は $action です。" 1>&2 echo "$0 [start|stop]" 1>&2 exit 1 fi
(ログ管理やエラーハンドリングは割愛しています。 また、スクリプトファイルを作成せずに直接コマンドを実行しても良いのですが、 起点を統一する意味で作成しています。)
agentcore
というディレクトリに移動し、
infaagent startup
もしくは infaagent shutdown
というコマンド実行してあげます。
(起動・停止コマンドについては こちら )
ちなみに、停止(shutdown)は停止完了後にコマンドが終了しましたが、
開始(startup)の方はすぐにプロンプトが戻ったので非同期的な動きのようです。
今回は例として、Secure Agentの管理に infa
というLinuxのユーザを使用し、
そのホームディレクトリに配置した体で次章以降進めます。
- 配置先例:
/home/infa/infa_agent_ctl.sh
- 実行方法(infaユーザにて実行):
infa_agent_ctl.sh start
またはinfa_agent_ctl.sh stop
Cronによる起動
前章のスクリプトをCronに登録するだけで、所定の時刻に稼働させられます。
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 10 * * * /home/infa/infa_agent_ctl.sh start 0 22 * * * /home/infa/infa_agent_ctl.sh stop
↑Secure Agentを10時に起動し、22時に停止する場合のinfaユーザのCronの例です。 (rootユーザのCronであれば、実行ユーザにinfaを指定して設定してやる必要があります。)
systemdによる起動
起動時刻が不定期な場合などに、
EC2の起動と連携してSecure Agentを起動させたいので、
systemdから先述のスクリプトを実行するようにしました。
手順は以下のような感じです。(rootユーザ作業)
/etc/systemd/system/
配下にサービスの設定ファイルとしてinfa_agent_start.service
を作成[Unit] Description=start iics service After=syslog.target network-online.target [Service] User=infa Type=oneshot RemainAfterExit=no KillMode=none ExecStart=/home/infa/infa_agent_ctl.sh start [Install] WantedBy=multi-user.target
(
ExecStart
は配置先に合わせて適宜)systemctl daemon-reload
を実行し、設定を再読込みsystemctl list-unit-files --type=service | grep infa
を実行し、設定を確認
→この時点ではinfa_agent_start.service disabled
のように、登録されているが自動起動無効は無効な状態systemctl enable infa_agent_start
で自動起動を有効化systemctl list-unit-files --type=service | grep infa
を実行し、設定を再度確認
→infa_agent_start.service enabled
上記の設定で、EC2が起動するとSecure Agentも起動してくれるようになりました。 (私は起動をsystemdで、停止をCronで自動化して使っています。)
おわりに
今回のように手作業は自動化を進めて、IICSの管理がより簡単になればと思います。